package futbol.tacticas.concursantes2007.TacticaTururu;

import java.awt.Point;

import futbol.tacticas.Comando;
import futbol.tacticas.SituacionJugadores;

public class Jugador {

	// -------------------------- //
	//    P A R A M E T R O S     //
	// -------------------------- //

	protected int posicionX;
	protected int posicionY;
	protected int originalX;
	protected int originalY;
	protected int distanciaIrBola;
	protected int fuerza;
	protected int dorsal;
	protected int pase;

	// ---------------------------- //
	//    C O N S T R U C T O R     //
	// ---------------------------- //


	public Jugador (int dorsal) {
		this.dorsal = dorsal;
	}

	// ---------------------------------------- //
	//    G E T T E R S   Y   S E T T E R S     //
	// ---------------------------------------- //


	public int getFuerza() {
		return fuerza;
	}
	public int getPosicionX() {
		return posicionX;
	}
	public int getPosicionY() {
		return posicionY;
	}
	public void setFuerza(int fuerza) {
		this.fuerza = fuerza;
	}
	public void setPosicionX(int posicionX) {
		this.posicionX = posicionX;
	}
	public void setPosicionY(int posicionY) {
		this.posicionY = posicionY;
	}
	public void setPosicionXY(int posicionX,int posicionY) {
		this.posicionX = posicionX;
		this.posicionY = posicionY;
	}
	public void setPase (int pase) {
		this.pase = pase;
	}

	public int getPase () {
		return pase;
	}

	public int getOriginalX() {
		return originalX;
	}

	public int getOriginalY() {
		return originalY;
	}

	public void setOriginalX(int originalX) {
		this.originalX = originalX;
	}

	public void setOriginalY(int originalY) {
		this.originalY = originalY;
	}

	public int getDistanciaIrBola() {
		return distanciaIrBola;
	}

	public void setDistanciaIrBola(int distanciaIrBola) {
		this.distanciaIrBola = distanciaIrBola * 10;
	}

	// -------------------------------------- //
	//     M E T O D O   A B S T R A C T O    //
	// -------------------------------------- //

	public Comando command (SituacionJugadores sj) {
		return null;
	}

	// ---------------------------------------- //
	//     M E T O D O S   E S T A T I C O S    //
	// ---------------------------------------- //


	public static int coordenadaInterceptarY (Point bola, Point enemigo, int distancia) {

		// se aplica la ecuacion del calculo de la pendiente
		// y2 - y1 = pendiente (x2 - x1)
		// donde el punto 1 va a ser la bola y el 2 el tio al que queremos cubrir
		double pendiente = (enemigo.getY() - bola.getY()) / (enemigo.getX() - bola.getX());

		// se calcula el termino independiente, la 'b' de
		// la archiconocida y = ax + b
		double terminoIndependiente = bola.getY() - (pendiente * bola.getX());

		// se aplica la ecuacion de la recta 'y = ax + b'
		return (int) (pendiente * (enemigo.getX() + distancia) + terminoIndependiente);

	}

	public static int calcularDistancia (Point bola, Point enemigo) {

		// se calcula la distancia del vector
		// d = raiz cuadrada de (x2 -x1)^2 + (y2 - y1)^2
		return (int) Math.sqrt(Math.pow(enemigo.getX() - bola.getX(), 2) + Math.pow(enemigo.getY() - bola.getY(), 2));
	}

} // public abstract class Jugador
